package com.nineclock.system.service;


import com.nineclock.system.dto.ChangeDepartmentDTO;
import com.nineclock.system.dto.DepartmentOrUserSimpleDTO;
import com.nineclock.system.dto.SysCompanyUserDTO;
import com.nineclock.system.dto.SysDepartmentDTO;
import com.nineclock.system.pojo.SysDepartment;

import java.util.List;

public interface SysDepartmentService {

    /**
     * 组织架构: PC-获取组织架构列表(左侧菜单)
     */
    List<SysDepartmentDTO> queryDepartmentList();

    /**
     * 查询当前企业所有部门ID集合
     * @return
     */
    List<Long> queryDepartmentIds();


    /**
     * 组织架构:获取部门简单列表
     * @param id
     * @param includeMember 0-包含 1-不包含
     * @return
     */
    List<DepartmentOrUserSimpleDTO> querySimpleDepartment(Long id, Integer includeMember);

    /**
     * 根据员工id获得从低到高级别的部门ID集合
     * @param companyUserId
     * @return
     */
    List<Long> queryDepartmentsByUserId(Long companyUserId);

    /**
     * 组织架构:添加部门
     * @param department
     * @return
     */
    SysDepartmentDTO addDepartment(SysDepartmentDTO department);


    /**
     * 组织架构:删除部门成员
     * @param ids
     */
    void deleteDepartments(List<Long> ids);

    List<SysDepartmentDTO> queryDepartmentsName();
    void switchDept(ChangeDepartmentDTO changeDepartmentDTO);

    SysCompanyUserDTO addDeptMember(SysCompanyUserDTO sysCompanyUserDTO);
}
